package com.itheima.reflect;

import org.junit.Test;

import java.lang.reflect.Field;

/*
*  获取类的成员变量，并对其进行操作
* */
public class Test3Field {


    @Test
    public void testGetFields() throws Exception {
        Class c1=Student.class;

        //获取所有类的成员变量
        Field[] fields = c1.getDeclaredFields();
        for (Field field : fields) {
            System.out.println(field);
            System.out.println(field.getName()+"--->"+field.getType());
        }


        System.out.println("--------------------------------------------------");
        //定位某个成员变量
        Field fName = c1.getDeclaredField("name");
        System.out.println(fName.getName()+"--->"+fName.getType());

        //赋值
        //赋值取值都要传入对象
        Student s=new Student();
        fName.setAccessible(true);  //禁止检查访问权限

//        s.setName("hover");  //下面的等价于这行
        fName.set(s,"hover");
        System.out.println(s);

        //取值
        String name = (String) fName.get(s); //相当于s.getName()
        System.out.println(s.getName());    //等价于get
        System.out.println(name);

    }
}
